package cn.nhs.schedule.task;

import java.util.concurrent.ScheduledFuture;

/**
 java.util.concurrent.ScheduledFuture 是 Java 中的一个接口，
 用于表示一个可调度的任务的结果。它是 java.util.concurrent.Future 的子接口，
 并在其基础上扩展了一些方法，以支持定时任务的特性。
 */
public class ScheduledTask {

    volatile ScheduledFuture<?> future;

    /**
     boolean cancel(boolean mayInterruptIfRunning): 取消任务的执行。如果任务还没有开始执行，则会尝试取消任务，
     并返回 true；如果任务已经开始执行或已经完成，则返回 false。参数 mayInterruptIfRunning 指示是否允许中断正在执行的任务。
     */
    public void cancel() {
        ScheduledFuture<?> future = this.future;
        if (future == null) return;
        future.cancel(true);
    }

    // 判断任务是否已经被取消。
    public boolean isCancelled() {
        ScheduledFuture<?> future = this.future;
        if (future == null) return true;
        return future.isCancelled();
    }

}
